home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 007 / extbatch.arc / BATDOC.BAT < prev    next >
DOS Batch File  |  1984-08-28  |  40KB  |  1,028 lines

  1. bat * Loading on-line HELP and DOCUMENTATION .....
  2. bat * Written by F.Canova 10/5/83.  Enhanced Ken Goosens 11/15/83.
  3. bat * (c) Copyright 1983 by Seaware Corp. all rights reserved.
  4.  
  5. bat    goto -line0
  6.  
  7. bat -header |* Routine prints general purpose header for help text
  8. bat    stack.purge |*    remove any pre-typed keystrokes.
  9. bat    cls begtype
  10. ╔════════════════════════════════════════════════════════════════════════════╗\0F
  11. end
  12. bat    type %s%s%s %h ............. Page %n
  13. bat    begtype
  14. ╚════════════════════════════════════════════════════════════════════════════╝
  15.     Press:  PGDN for next page,   PGUP for prev page,  HOME for main menu.
  16.  
  17. end
  18. bat    return
  19.  
  20. bat -scroll |* Routine accepts key for scrolling help text
  21. bat    inkey %k
  22. bat    if %k = KEY003         goto -opt0 |* Break key
  23. bat    if %k = KEY01B %L = 0       | return |* ESC  key
  24. bat    if %k = KEY147 %L = 0       | return |* Home key
  25. bat    if %k = KEY149 %L = %L - 1 | cls | return |* PgUp key
  26. bat    if %k = KEY151 %L = %L + 1 | cls | return |* PgDn key
  27. bat    goto -scroll |* ignore any other key.
  28.  
  29. bat    * ROUTINE TO HAVE USER GIVE A COMMAND A TRY !!
  30. bat    * %A = string which must match
  31. bat -tryit
  32. bat    begtype
  33.  
  34.   Enter your guess!  ;
  35. end
  36. bat -tryit.loop
  37. bat    if .%a <> . skip 8    |* end of string ?
  38. bat    begtype
  39.  
  40.  
  41. EXCELLENT !! - that's exactly it!
  42.  
  43. end
  44. bat    read Press the ─┘ key to continue to next section.....
  45. bat    return
  46. bat    %b = %a $ 1 1        |* get 1st letter
  47. bat    %a = %a $ 2        |* remove it from string
  48. bat -tryit.try
  49. bat    inkey %i        |* get a key.
  50. bat    if %i = KEY020 type %b; | goto -tryit.loop
  51. bat    if %i = %b type %i; | goto -tryit.loop
  52. bat    beep goto -tryit.try
  53.  
  54. bat -line0
  55. bat -line44
  56. bat    cls begtype
  57. \0F╔════════════════ BATDOC ═══════════════════╗
  58. ║     Menu driven HELP and DOCUMENTATION.   ║
  59. ╙───────────────────────────────────────────╜
  60.  
  61.     GENERAL:\07
  62. 1.    Introduction and how to use this Help.
  63. 2.    The user supported concept.
  64. 3.    BAT-BBS information. On-line users forum.
  65.  
  66.     \0FEXTENDED BATCH LANGUAGE version 2.0\07
  67. 4.    What BAT is.... an introduction.
  68. 5.    Printing to display.
  69. 6.    Reading data from users.
  70. 7.    Making decisions and controlling program flow.
  71. 8.    Using the keyboard stack.
  72. 9.    Sensing program's results.
  73. 10.    Assignment statements.
  74. 11.    Debugging aids.
  75. 12.    Additional information.
  76.  
  77. 0.    Exit.
  78.  
  79. END
  80.  
  81. bat -entry0
  82. bat    read Enter the number of your selection. > %A
  83. bat    if / = /%a    %a = 1
  84. bat    if %a < 13 if %a > 1/ cls goto -opt%a
  85. bat    if %a < :  if %a >  / cls goto -opt%a
  86. bat    beep begtype
  87. I DON'T KNOW THAT OPTION!
  88. Just enter a number 0 to 12 and press the ─┘ key.
  89.  
  90. end
  91. bat    goto -entry0
  92.  
  93. bat    -opt0    cls begtype
  94. Ready to leave on-line help! Press a key:
  95.  
  96. <\0FS\07>ystem    <\0FD\07>emo    <\0FH\07>elp
  97. end
  98. bat    -exiting inkey %a
  99. bat        if %a = S    exit
  100. bat        if %a = H    goto -line0
  101. bat        if %a = D    stack BATDEMO | exit
  102. bat        beep goto -exiting
  103.  
  104. bat -line1
  105. bat -opt1 %h = INTRODUCTION | %L = 1 | %N = 1.0
  106. bat    call -header
  107. bat    begtype
  108.     This program will provide you with help information on the use of
  109. the EXTENDED BATCH LANGUAGE version 2.0.  It is designed to allow for
  110. easy access and retrieval of information that would be harder to find
  111. by more conventional means.
  112.  
  113.     The information is broken up into multiple sections.  Each section
  114. may have several pages.  To access each page in order, just keep
  115. pressing the PGDN key.    At the top of your screen is the name of the
  116. section which you are in and the page number.
  117.  
  118. \0FNote:\07
  119.  
  120.     If you wish to directly enter another section now, press the \0fHOME\07
  121. key to return to the main menu, enter the proper \0fsection number\07 and
  122. press the \0f─┘\07 key.
  123.  
  124. end
  125. bat    call -scroll | goto -line%L
  126. bat -line2 %n = 1.1 | call -header | begtype
  127. While in any of these sections, there are just three keys needed:
  128.  
  129. PGDN -    This key will advance to the next page of any section. If
  130.     there are no more pages in the section, then it will advance
  131.     to the next section.
  132.  
  133. PGUP -    This key will back up to a previous page within a section.
  134.     If there are no more previous pages within a section, it
  135.     will backup to the previous section.
  136.  
  137. HOME or ESC - Either of these keys will return directly to the
  138.     main menu. From the menu, any section can be looked at
  139.     directly by entering the section number and pressing ─┘.
  140. end
  141. bat    call -scroll | goto -line%L
  142. bat -line3 %n = 1.2 | call -header | begtype
  143.   There are several sections where you will be given questions and answers.
  144. If you would like to peek and see answer without specifically answering it,
  145. you can press the space bar to reveal the answer letter by letter.
  146.  
  147.     One interesting facet you should know while using this on-line help
  148. and documentation is that you are using the EXTENDED BATCH LANGUAGE
  149. program to display and control these menus.
  150.  
  151.     Never before has a batch language been so powerful on the IBM
  152. personal computer as to be able to provide a facility like this.  In
  153. the following pages of description, we hope that you will see, as we
  154. did, that this program has extraordinary capability which does much
  155. more than just expand the capability of DOS.  In fact, it gives new
  156. power to your system by providing capabilities never before possible.
  157. end
  158. bat    call -scroll | goto -line%L
  159. bat -opt2
  160. bat -line4 %H = USER%sSUPPORTED | %L = 4 | %n = 2.0 | call -header | begtype
  161.  ╓─                                     ─╖
  162.  ║  PRIVATE USERS, If you are using this program and find it of value,      ║
  163.  ║        your contribution ($30 suggested) will be appreciated.      ║
  164.  ║                                      ║
  165.  ║  You  are encouraged to  copy and share this program with other users, ║
  166.  ║ on the  conditions that the    program is not    distributed  in  modified ║
  167.  ║ form, that no fee or consideration is charged, and that this notice is ║
  168.  ║ not bypassed or removed.                          ║
  169.  ║                                      ║
  170.  ║  In appreciation of your $30 contribution, you will be provided with a ║
  171.  ║ detailed users guide and  diskette  giving you complete  descriptions, ║
  172.  ║ examples, and tips on this program's use. All contributors are given   ║
  173.  ║ access to the BAT-BBS, a hot-line for assistance, tips, and updates.   ║
  174.  ║                                      ║
  175.  ║ The $30 license fee (per system) is required for COMMERCIAL USERS if   ║
  176.  ║ used in a place of business or incorporated into another product.      ║
  177.  ║                                      ║
  178.  ╙─  (c) Copyright 1982, 1983 by Seaware Corp. All rights reserved.     ─╜
  179. end
  180. bat    call -scroll | goto -line%L
  181. bat -line5 %n = 2.1 | call -header | begtype
  182.   For your $30 contribution, you will be provided with a detailed users
  183. guide.    This hardcopy manual has over 70 pages of descriptions, examples,
  184. useful utilities, and tips on this program's use.  It is prepunched for an
  185. IBM binder for ready reference.  You will also receive a diskette
  186. containing the latest program version and useful utilities.  All
  187. contributors are also invited to use the BAT-BBS, an on-line forum for
  188. user's ideas, tips, programs, and assistance.  (See next section for more
  189. information).  Only with your support can we help you even more.
  190.  
  191.   This concept was founded by Andrew Fugleman at Headlands Press, Inc.
  192. with a series of software called "Freeware"(tm).  I would like to thank
  193. Andrew for his inspiration and help.  Because I feel that good software
  194. should have someone standing behind it, we at Seaware want to put your
  195. contribution directly into support for you as our thanks of your support of
  196. us.  If you find this program of value, you are encouraged to send in your
  197. contribution.  Your support will not go unnoticed.
  198.  
  199. Seaware Corp. ≡≡≡≡ Post Office Box 1656 ≡≡≡≡ Delray Beach, FL 33444
  200. end
  201. bat    call -scroll | goto -line%L
  202. bat -opt3
  203. bat -line6 %H = BAT%s-%sBBS | %L = 6 | %n = 3.0 | call -header | begtype
  204.  
  205. One of the special services we provide to EXTENDED BATCH LANGUAGE
  206. users is through a communication medium called "BAT-BBS". This is
  207. a direct link from you to other users, as well as Seaware.
  208.  
  209.  
  210. The following list shows the many things that
  211.  
  212.     BAT-BBS can provide .  .  .
  213.  
  214. end
  215.  
  216. bat    call -scroll | goto -line%L
  217. bat -line7 %n = 3.1 | call -header | begtype
  218. FOR USERS WITH A MODEM:
  219.  
  220.     * BAT-BBS is a hotline for your questions!
  221.  
  222.     * Directly access our computer at Seaware via phone.
  223.  
  224.     * It will be ready to give helpful ideas.
  225.  
  226.     * Programs and Utilities are available to download.
  227.  
  228.     * Users are welcome to upload their programs/ideas.
  229.  
  230.     * Tips and techniques are on-line.
  231.  
  232.     * Converse with other users and program author via
  233.         electronic mail.
  234.  
  235.     * Receive program updates as soon as they are available.
  236. end
  237. bat    call -scroll | goto -line%L
  238. bat -line8 %n = 3.2 | call -header | begtype
  239.  
  240. IF YOU DON'T HAVE A MODEM:
  241.  
  242.     * You can still phone the BAT-BBS if you wish to
  243.       have your questions answered via voice.  A
  244.       recorder will take your message.
  245. end
  246. bat    call -scroll | goto -line%L
  247. bat -line9 %n = 3.3 | call -header | begtype
  248.  
  249.     You can access the bulletin board service by using any 300 baud or
  250. 1200 baud modem with your computer.  You should call the computer
  251. using 7 data bits, even parity, and 1 stop bit.
  252.  
  253.     You will also need a communication program such as PC-TALK III,
  254. CROSSTALK, or Asynchronous Communication Package version 2.0.  Contact
  255. your local computer store if you need more information or help with
  256. communication equipment or software.
  257.  
  258.   Service is from 00:01 hours to 18:00 hours daily, Eastern Standard Time.
  259. A phone number and your personal password will be supplied when we receive
  260. your contribution.
  261. end
  262. bat    call -scroll | goto -line%L
  263. bat -line10 %n = 3.4 | call -header | begtype
  264. To access BAT-BBS by modem:
  265.  
  266.     1. Call the BAT-BBS phone number and wait about two rings then
  267.        hang up.
  268.  
  269.     2. Call the BAT-BBS again, it will immediately answer the
  270.        phone and wait for the carrier from your modem.
  271.  
  272. To access BAT-BBS by voice:
  273.  
  274.     1. Call the BAT-BBS phone number and wait about four rings.
  275.        A recorder will take your question on the forth ring.
  276.  
  277.     2. You can take your time.  The recorder will continue as long
  278.        as you are talking.    Be sure to leave your NAME and ADDRESS for
  279.        a response.
  280. end
  281. bat    call -scroll | goto -line%L
  282. bat -opt4
  283. bat -line11 %H = INTRODUCTION | %L = 11| %n = 4.0 | call -header | begtype
  284.   BAT is short for Extended Batch Language.  BAT is a powerful productivity
  285. tool for the IBM Personal Computer.  It represents a significant advance in
  286. providing a comprehensive yet easy to learn and use facility for
  287. controlling tasks you give your computer.  It can even give you on-line
  288. documentation SUCH AS THIS!
  289.  
  290.   BAT is a command programming language.  It is a high level language that
  291. can be used as a direct replacement or in conjunction with DOS batch files.
  292. It can operate with IBM DOS versions 1.0, 1.1, or 2.x.    Compared with
  293. standard DOS batch files, BAT has superior control structures, string
  294. handling, and user interfaces.    It also has tracing facilities, and is easy
  295. to learn and use.  Many aspects of the language are like BASIC.  Users of
  296. VM/370 will also find it similar to EXECs.  It seems that both "end users"
  297. and programmers find BAT a simple and effective language.
  298.  
  299. end
  300. bat    call -scroll | goto -line%L
  301. bat -line12 %n = 4.1 | call -header | begtype
  302. With Extended Batch Language, you can have:
  303.  
  304. -    Better control of messages to the screen
  305.  
  306. -    Accept responses from the user and create responses to programs
  307.  
  308. -    String handling operations (substring, length, etc.)
  309.  
  310. -    Arithmetic expressions and assignments
  311.  
  312. -    Comparisons and program return codes
  313.  
  314. -    Search for files or tell if they exist
  315.  
  316. -    Complete freedom to mix DOS and BAT commands within the same control file
  317.  
  318.  
  319. Let's look at how it measures up to today's DOS......
  320. end
  321. bat    call -scroll | goto -line%L
  322. bat -line13 %n = 4.2 | call -header | begtype
  323. Function    DOS 1.1     DOS 2.0     Extended Batch Lang.
  324. ----------    -------     -------     --------------------
  325. BEEP                        X
  326. CALL/RTN                    X
  327. CLS                X        X
  328. BEGSTACK                    X
  329. BEGTYPE                     X
  330. EXIT                X        X
  331. GOTO                X        X
  332. IF                Limited     X
  333. INKEY                        X
  334. READ                        X
  335. READSCRN                    X
  336. SKIP                        X
  337. STATEOF             Limited     X
  338. STACK                        X
  339. TYPE        Limited     X        X
  340. Assignments                    X
  341. TRACE                        X
  342. DOS Vars    X        X        X
  343. Global Vars                    X
  344. Return Codes            X        X
  345. end
  346. bat    call -scroll | goto -line%L
  347. bat -line14 %n = 4.3 | call -header | begtype
  348.   As you can see from the previous chart, Extended Batch Language has more
  349. power and enhanced capabilities than either DOS 1.1 or DOS 2.0.  This
  350. program uses these capabilities to solve common problems for......
  351.  
  352.   The system programmer - who needs to do long sequences of tasks between
  353. linker, compilers, debuggers, and editors.  He can now create an
  354. intelligent link between these programs.  For instance, he may wish to do a
  355. link depending on if the previous compile was successful.  He can also
  356. respond automatically from a keyboard "stack" into various utilities.
  357.  
  358.   The secretary - who has several types of tasks to perform (word
  359. processing, accounting packages, etc) and requires a simple way of changing
  360. from one type of task to another, perhaps with optional help text.
  361.  
  362.   The student - who wishes to go from one game to another without having to
  363. learn the system commands required to make each available.
  364.  
  365.   Testers - who wish to automate long, boring tests and procedures on the
  366. personal computer. An excellent tool for a manufacturing line.
  367. end
  368. bat    call -scroll | goto -line%L
  369. bat -line15 %n = 4.4 | call -header | begtype
  370.  
  371.   The effect of using BAT is to put "covers" on the programs and system
  372. that it controls.  A friendly, easy to use interface is easily created.
  373. Described in these pages is a solution to batch files through the use of
  374. BAT.
  375.  
  376.   Once you have looked over the descriptions of each command, browse
  377. through the BATDEMO.BAT file and look at the commands in operation.  By
  378. trying out some sample programs, you should be able to gain a full
  379. understand of how to write some powerful batch files by using Extended
  380. Batch Language.
  381.  
  382.  
  383.  
  384. Copyright (c) 1982, 1983 by Seaware Corp.           Program by
  385. All Rights reserved by Seaware Corp.               Frank Canova
  386.  
  387. end
  388. bat    call -scroll | goto -line%L
  389. bat -opt5
  390. bat -line16 %H = HOW%sTO%sPRINT | %L = 16| %n = 5.0| call -header| begtype
  391.  
  392.   The simplest thing to for Extended Batch Language to do is to print text
  393. on the display.  This is done by either of two commands, TYPE and BEGTYPE.
  394.  
  395.   The TYPE command can be used for something as simple as saying hello!
  396. For example:
  397.  
  398.     BAT TYPE HELLO THERE
  399.  
  400.   This is all that is needed.  This command can be typed directly from DOS
  401. (this is called immediate mode) or be entered into a file such as
  402. "TRIAL.BAT" (this is called direct execution mode).  To execute it as a BAT
  403. program with the file, just type the file's name "TRIAL" from DOS and you
  404. will see the results of the program "HELLO THERE" coming from BAT.
  405. end
  406. bat call -scroll | goto -line%L
  407. bat -line17 %n = 5.1 | call -header | begtype
  408.  
  409.   You can also put DOS variables into this command to display their
  410. contents.  For example, if the "TRIAL.BAT" file contained the line:
  411.  
  412.     BAT TYPE HELLO THERE %1 %2
  413.  
  414.   Then when we start the BAT program from DOS, we might enter:
  415.  
  416.     TRIAL COMPUTER USER
  417.  
  418.   DOS will automatically store the words after the program name into its
  419. variables.  Therefore, in the TYPE command, we will see contents of these
  420. variables on the screen.  The resulting message would be:
  421.  
  422.     HELLO THERE COMPUTER USER
  423. end
  424. bat    call -scroll | goto -line%L
  425. bat -line18 %n = 5.2 | call -header | begtype
  426.  
  427.   There is a second method of putting text onto the display.  This is with
  428. the BEGTYPE command.  Although it will not display the contents of
  429. variables, it is very useful for displaying large blocks of text, such as
  430. menus.    For example, if the "TRIAL.BAT" file contains:
  431.  
  432.     BAT BEGTYPE
  433.     This is a large block of text. It is useful for menus. Note
  434.     that Upper/Lower case characters are displayed intact here.
  435.     The block is always ended with "END" in the first column
  436.     after the text finishes.
  437.     END
  438.  
  439.   When executed, the "TRIAL.BAT" program will display:
  440.  
  441.     This is a large block of text. It is useful for menus. Note
  442.     that Upper/Lower case characters are displayed intact here.
  443.     The block is always ended with "END" in the first column
  444.     after the text finishes.
  445. end
  446. bat    call -scroll | goto -line%L
  447. bat -line19 %n = 5.3 | call -header | begtype
  448.  
  449.   There is an additional advantage to using BEGTYPE command.  This command
  450. can also highlight text to the user.  This is done by using the form:
  451. [\\hex] within the text block.
  452.  
  453.   For example if the text block contained \\0F within the text, the result
  454. would be \0F High Intensity Text !  \07.
  455.  
  456.   By choosing different values, the screen attributes can be controlled to
  457. create inverted video, blinking, underlined, and very colorful text.
  458.  
  459.   An additional command CLS can be used to clear the display before
  460. printing data.    For instance, the combination "BAT CLS BEGTYPE" is quite
  461. useful for printing menus and text such as this screen.
  462. end
  463. bat    call -scroll | goto -line%L
  464. bat -line20 %n = 5.4 | call -header | begtype
  465.  
  466. To control the color of text, use BEGTYPE.  To get a particular effect,
  467. put in "\\mn" where mn are two hex digits (0123...ABCDEF).  The set
  468. effect will continue within the BEGTYPE unless another setting is
  469. put into effect.   Here are the colors against the black background.
  470.  
  471. HEX for NORMAL     HEX for BOLD
  472.  
  473.  \0101 BLUE\07          \0909 LIGHT BLUE\07
  474.  \0202 GREEN\07         \0A0A LIGHT GREEN\07
  475.  \0303 CYAN\07          \0B0B LIGHT CYAN\07
  476.  \0404 RED\07           \0C0C LIGHT RED\07
  477.  \0505 MAGENTA\07       \0D0D LIGHT MAGENTA\07
  478.  \0606 BROWN\07         \0E0E YELLOW\07
  479.  \0707 WHITE\07         \0F0F LIGHT WHITE\07
  480.  
  481. end
  482. bat    call -scroll | goto -line%L
  483. bat -line21 %n = 5.5 | call -header | begtype
  484.  
  485. The least significant hex digit ("n" of "mn") controls foreground, i.e.
  486. the lettering.  The more significant digit controls the background 
  487. (color around the lettering).  The normal setting is white foreground
  488. on black background (07 hex).  To get \87blinking\07 letters on a black
  489. background, make the first hex digit 8.  For example, the blinking you
  490. here see is produced by "\\87".
  491.  
  492. To vary the background color, put the digit of the first seven colors
  493. in the \17first\07 position.  For example the blue background
  494. you see here is produced by "\\17".  \70Reverse video\07 would be black on
  495. white, i.e. "\\70".  To combine \C0blinking\07 with a different background
  496. color, \0fadd 8\07 to the first hex digit.  Black on red would be "40",
  497. so to get the blinking we add 8 to 4 to get "\\C0" as the control 
  498. (remember, this is hex, not decimal).
  499. end
  500. bat    call -scroll | goto -line%L
  501. bat -line22
  502. bat begtype
  503.  
  504.     \0fNOW IT'S YOUR TURN !!!\07
  505.  
  506.  
  507. If the \0f%4\07 variable contains the word \0fDAY\07, what is the command to display
  508. the words "\0fFUN DAY\07" on the display?
  509.  
  510. end
  511. bat    %A = BAT%sTYPE%sFUN%s%%4
  512. bat    call -tryit
  513. bat -opt6
  514. bat -line22 %H = READING | %L = 22| %n = 6.0 | call -header | begtype
  515.   In order to get input from the user, there are two available commands,
  516. READ and INKEY.
  517.  
  518.   When the command word READ is seen in the batch file, an input line is
  519. accepted from the user.  All function keys are assigned to the normal DOS
  520. edit functions.  When ENTER is pressed, the input line is assigned to DOS
  521. variables.
  522.  
  523.   Each word will be assigned in order to the variables indicated after the
  524. READ command.  When there are no more variables after the READ command to
  525. assign, the remainder of the response is thrown away.  If there are more
  526. variables to be assigned after the READ command than there are words from
  527. the user, these variables will be cleared out to a empty state.  For
  528. example:
  529.  
  530.     BAT READ Please enter your name ==> %1 %2
  531.  
  532.   This would prompt the user and wait for him to enter two words.  These
  533. words will be saved in the %1 and %2 variables.
  534. end
  535. bat    call -scroll | goto -line%L
  536. bat -line23 %n = 6.1 | call -header | begtype
  537.  
  538.   Note that there does not have to be any variables indicated after the
  539. command READ.  In this case, BAT would wait for the enter key, throw away
  540. any response, then continue to process the next batch file command.
  541.  
  542. end
  543. bat    call -scroll | goto -line%L
  544. bat -line24 %n = 6.2 | call -header | begtype
  545.  
  546.   In the event that you wish to get a single keystroke from the user, the
  547. INKEY command should be used.
  548.  
  549.   This command will wait for the user to enter a single key on the keyboard
  550. and return its value in the optional variable.    This key can be not only
  551. letters, but all function keys, control keys, etc.  For example:
  552.  
  553.     BAT INKEY Press any key to continue... %0
  554.  
  555.   When the user presses a single key, that key is saved into the variable %0.
  556.  
  557.   If the key that is pressed is in the range of "!" to "z" (decimal 33 to
  558. 122) then the key saved to the optional variable. If you wish this key to be
  559. echoed to the display, you must specifically use the TYPE command.
  560.  
  561. end
  562. bat    call -scroll | goto -line%L
  563. bat -line25 %n = 6.3 | call -header | begtype
  564.  
  565.   If the key is not in the above range, then the key will be converted to
  566. the form "KEYxxx" where xxx is the hex value of the key.  Extended key
  567. codes will be in the range KEY100 to KEY1FF and nonextended key codes will
  568. be in the range KEY000 to KEY0FF.  Refer to Appendix G of the Basic manual
  569. for a complete description of the various assignments of key codes.
  570.  
  571.   The character does not have to be assigned to a variable.  If the
  572. variable name is not present following the command INKEY, the system will
  573. wait for any key to be pressed from the user, and then continue processing.
  574.  
  575. end
  576. bat    call -scroll | goto -line%L
  577. bat -line26
  578. bat begtype
  579.  
  580.     \0fNOW IT'S YOUR TURN !!!\07
  581.  
  582.  
  583.   We wish to create a menu with several options.  At a "\0f=>\07" prompt,
  584. the user must enter a \0fsingle letter\07 to select his option.  What is
  585. the command needed to request a single keystroke into the \0f%4\07
  586. variable for option selection using the prompt above?
  587.  
  588. end
  589. bat    %A = BAT%sINKEY%s=>%s%%4
  590. bat    call -tryit
  591. bat -opt7
  592. bat -line26 %H = PROGRAM%sCONTROL | %L = 26| %n = 7.0| call -header| begtype
  593.   There are several ways of controlling the order of execution of a program
  594. written with Extended Batch Language.  GOTO, CALL, RETURN, and IF are all
  595. commands that do this.    The simplest is the GOTO command:
  596.  
  597.     BAT GOTO -LABEL
  598.  
  599.   If this line is put into a ".BAT" file, then it will stop execution at
  600. this line and resume at the line within the file which contains:
  601.  
  602.     BAT -LABEL
  603.  
  604.   This is a unconditional branch.  If the label is not present within the
  605. file, and error will result.  Note the minus (-) sign before the label
  606. name.  \0FLabels must be preceded with a minus sign.\07 This is done so
  607. that BAT can tell the difference between a label and a command within the
  608. language.
  609. end
  610. bat    call -scroll | goto -line%L
  611. bat -line27 %n = 7.1 | call -header | begtype
  612.  
  613.   A CALL command is similar to a GOTO command.    The primary difference is
  614. that the line where the CALL command was is saved away.  Then a branch to a
  615. label is done, just like the GOTO command.  Note that up to three lines can
  616. be saved away at a time with this command.  When a RETURN command is found,
  617. the last line that was saved is now restored.  Execution resumes at the
  618. line following the original CALL command.
  619. end
  620. bat    call -scroll | goto -line%L
  621. bat -line28 %n = 7.2 | call -header | begtype
  622.   For example, if a program contains:
  623.  
  624.     BAT    TYPE One
  625.     BAT    \0FCALL -LABEL\07
  626.     BAT    \0FCALL -LABEL\07
  627.     BAT    TYPE Four
  628.     BAT    EXIT
  629.     BAT -LABEL
  630.     BAT    TYPE Two
  631.     BAT    TYPE Three
  632.     BAT    \0FRETURN\07
  633.  
  634.   You will see on the display:
  635.     ONE
  636.     TWO
  637.     THREE
  638.     TWO
  639.     THREE
  640.     FOUR
  641. end
  642. bat    call -scroll | goto -line%L
  643. bat -line29 %n = 7.3 | call -header | begtype
  644.   The final way to control the flow of an Extended Batch Language program
  645. is to use an IF command.  The general form of this command is:
  646.  
  647.     BAT IF _word_    _condition_   _word_   _operation_______
  648.  
  649.  
  650.   Each word can be a fixed string of letters, or a variable, or a
  651. combination of each.
  652.  
  653.   The conditions can be:
  654.  
  655.     <    less than
  656.     =    equal to
  657.     >    greater than
  658.     <>    not equal to
  659.  
  660.   The operation can be any of the Extended Batch Language commands.
  661. end
  662. bat    call -scroll | goto -line%L
  663. bat -line30 %n = 7.4 | call -header | begtype
  664.   For example, all of the following IF statements will compare correctly
  665. and execute their corresponding TYPE command.  The first two statements
  666. will initialize variables used in the IF commands.
  667.  
  668.     BAT %1 = ABC
  669.     BAT %2 =
  670.  
  671.     BAT IF ABC = %1  TYPE The variable contains ABC.
  672.     BAT IF %1 = abc  TYPE This also matches.
  673.     BAT IF 0 <> 00     TYPE These are different lengths.
  674.     BAT IF 0 < 00     TYPE 0 has a smaller length.
  675.     BAT IF 456 > 123 TYPE Numerically, 456 is bigger.
  676.     BAT IF 456 < %1  TYPE ASCII value of 456 is smaller.
  677.     BAT IF AABCD = A%1D TYPE Token substitutions are made.
  678.     BAT IF %2 <> %1  TYPE Variables are different lengths.
  679.     BAT IF .%2 = .     TYPE This matches if var is empty.
  680.     BAT IF BOX = BOX IF DOG <> CAT TYPE Did multi-if compare.
  681. end
  682. bat    call -scroll | goto -line%L
  683. bat -line31
  684. bat begtype
  685.  
  686.     \0fNOW IT'S YOUR TURN !!!\07
  687.  
  688.  
  689.   We wish to make a series of tests on a menu option that a user entered.
  690. It is saved in the variable \0f%4\07.  What command is needed to test for
  691. the letter "\0fA\07"?
  692.  
  693. end
  694. bat    %A = BAT%sIF%s%%4%s=%sA
  695. bat    call -tryit
  696. bat -opt8
  697. bat -line31 %H = KEYBOARD%sSTACK| %L = 31| %n = 8.0| call -header| begtype
  698.   There is a method within the BAT language for answering questions from
  699. programs without operator intervention.  This is done by a "keyboard
  700. stack".  By entering data into the stack, you will essentially be entering
  701. data through your keyboard when any program requests it.  In this way, a
  702. batch file can now answer questions programs may have by 'typing' them for
  703. the user.
  704.  
  705.   The keyboard stack operates in a "first-in first-out" basis.  That is,
  706. the first line of text put into the stack will be the first seen by the
  707. program when it reads the keyboard.  The second line entered will be the
  708. second seen by the program, and so on.    As long as there is text remaining
  709. on the stack, ALL requests for data from the keyboard will actually come
  710. from the stack.  Once the stack has been emptied by the program, data will
  711. then come from the keyboard as usual.
  712.  
  713.   There are two commands which store data into the stack, STACK and
  714. BEGSTACK. Here's some more about them.....
  715. end
  716. bat    call -scroll | goto -line%L
  717. bat -line32 %n = 8.1 | call -header | begtype
  718.   The STACK command is very much like the previously mentioned TYPE
  719. command.  Instead of displaying to the screen, it will "push" data into the
  720. keyboard stack area.  When any program is ready to accept information from
  721. the keyboard, the parameters after the STACK command will be used as input.
  722. For example:
  723.  
  724.     BAT * This program will issue remarks to DOS.
  725.     BAT %1 = HELLO
  726.     BAT STACK REM THIS IS A REMARK FOR DOS
  727.     BAT STACK REM VARIABLE %%1 = %1
  728.  
  729. When executed, the following will appear on the screen:
  730.  
  731.     A>REM THIS IS A REMARK FOR DOS
  732.  
  733.     A>REM VARIABLE %1 = HELLO
  734. end
  735. bat    call -scroll | goto -line%L
  736. bat -line33 %n = 8.2 | call -header | begtype
  737.   The second command used to stack data is BEGSTACK.  This command is
  738. equivalent to BEGTYPE previously described.  It is useful for dumping large
  739. amounts of data to the stack area.  Although no parameter substitution is
  740. performed, there are several advantages to its use.
  741.  
  742.   First, if a line ends with the ";" (semicolon) character, a carriage
  743. return will NOT be stacked.  Second, if "\\HEX" is used where HEX is a
  744.  
  745. number from 01 to FE, then this exact keyboard value will be stacked.  This
  746. is useful for stacking special control characters and symbols.    Third, if
  747. "\\00\\HEX" is used, an extended key code will be stacked.  This is useful
  748. for stacking function keys and the like.  Refer to the Basic manual in
  749. Appendix G under "Extended Codes".  Fourth, if \\FF\\HEX is used, the stack
  750. will delay the keyboard characters from appearing to the program for HEX
  751. number of CPU "ticks".  There are about 12 hex (18 decimal) ticks per
  752. second in the CPU.  In all cases, the word HEX above represents a two digit
  753. hexadecimal number. Finally, \\\\ can be used to stack a single backslash.
  754.  
  755. Some examples...
  756. end
  757. bat    call -scroll | goto -line%L
  758. bat -line34 %n = 8.3 | call -header | begtype
  759. Some examples of BEGSTACK command::
  760.  
  761.     BAT BEGSTACK
  762.     \\09 Will stack the tab key.
  763.     This text will be stacked ; 
  764.         on one line!
  765.     \\00\\3B Will stack an F1 key.
  766.     \\\\ is seen as one backslash.
  767.     \\FF\\24 will pause two seconds.
  768.     end
  769.  
  770.  
  771. Hint: Some programs remove keystrokes before accepting a critical key. In
  772. some cases this can be avoided by using \\FF\\01 in the BEGSTACK command.
  773. end
  774. bat    call -scroll | goto -line%L
  775. bat -line35 %n = 8.4 | call -header | begtype
  776. There are also three control commands which are associated with the stack:
  777.  
  778. STACK.OFF     - Redirects data to come directly from
  779.         the physical keyboard. Does not remove
  780.         any data in the stack.
  781.  
  782. STACK.ON      - Directs data to come from the stack.
  783.         This is the default.
  784.  
  785. STACK.PURGE   - Removes any data from the stack and
  786.         keyboard buffers which are pending.
  787. end
  788. bat    call -scroll | goto -line%L
  789. bat -line36
  790. bat begtype
  791.  
  792.     \0fNOW IT'S YOUR TURN !!!\07
  793.  
  794.  
  795.   From our menu, we wish to start up a communications program and
  796. automatically dial a phone number with a smartmodem.  The communications
  797. program we have will take what is typed on the keyboard and send it to the
  798. modem.    The command needed for the modem to dial our phone is
  799. "\0fATD12\07".  What Extended Batch Language command will force the
  800. communication program to dial this modem command?
  801.  
  802. end
  803. bat    %A = BAT%sSTACK%sATD12
  804. bat    call -tryit
  805. bat -opt9
  806. bat -line36 %H = GETTING%sRESULTS!| %L = 36| %n = 9.0| call -header| begtype
  807.   The results of programs often need to be known so that some action can
  808. take place after the program ends.
  809.  
  810.   When the command word READSCRN is seen in the batch file, a line of text
  811. is read from the display screen into variables.  Having the ability to read
  812. text from the display can be useful for determining the result of another
  813. program, or making a query for some system status which would not normally
  814. be available within a batch file.  For example, by reading a directory from
  815. the screen, a series of files can be submitted to the macro assembler.
  816. Once the assembly is completed, the status can be read from the screen to
  817. determine if there were errors which would stop the link step.    Virtually
  818. any message which a program can generate can be used as feedback to a batch
  819. file by using READSCRN.
  820. end
  821. bat    call -scroll | goto -line%L
  822. bat -line37 %n = 9.1 | call -header | begtype
  823.   Its operation is very much like the READ command except for the fact that
  824. the information which is being read is coming from the display screen and
  825. not the keyboard.  Like the READ command, the text from the screen is
  826. tokenized (separated at word boundaries and assigned to variables).  The
  827. return code %R will be reflect the line number on the display that was
  828. read.  This number will be in the range of 1 to 25 for the top to bottom
  829. lines respectively. Once a line is read, this command will be set to read
  830. the previous line. Repeated READSCRN commands will read UP the display!
  831.  
  832. For example:
  833.     BAT CLS
  834.     BAT TYPE HELLO THERE
  835.     BAT READSCRN %A %B %C
  836.  
  837. After execution:
  838.     %A contains HELLO
  839.     %B contains THERE
  840.     %C contains nothing, it is empty.
  841.     %R (return code) contains 1, the line number that was read.
  842. end
  843. bat    call -scroll | goto -line%L
  844. bat -line38
  845. bat begtype
  846.  
  847.     \0fNOW IT'S YOUR TURN !!!\07
  848.  
  849.  
  850.   From our menu, we have started the IBM Macro Assembler program.  We know
  851. that when this program ends, it will display a number representing the
  852. number of errors that were found.  We want to make sure that this number is
  853. zero before continuing to the LINK program.  If we save this number in the
  854. variable \0f%A\07, what is the command to read the assembler result from
  855. the display?
  856.  
  857. end
  858. bat    %A = BAT%sREADSCRN%s%%A
  859. bat    call -tryit
  860. bat -opt10
  861. bat -line38 %H = ASSIGNMENTS| %L = 38| %n = 10.0| call -header| begtype
  862.   If the first character in the command is a '%' (Percent sign), then it is
  863. considered to be an assignment statement.  The first variable cannot be any
  864. predefined variable (such as %R or %%), but may be any of the other
  865. variables %0 to %9 and %A to %O.  If a DOS command is later executed and
  866. uses one of the variables %0 to %9, it will be properly replaced with the
  867. contents of that variable.
  868.  
  869. The first assignment token, the operator, and the final tokens are optional.
  870. The assignment statement must appear in one of the following forms:
  871.  
  872. \0f[var] =                      \07- create empty variable
  873. \0f[var] = [string]        \07- simple assignment
  874. \0f[var] = [number] + [number]    \07- addition
  875. \0f[var] = [number] - [number]    \07- subtraction
  876. \0f[var] = [number] * [number]    \07- multiplication
  877. \0f[var] = [number] / [number]    \07- division
  878. \0f[var] = [string] #        \07- string length
  879. \0f[var] = [string] $ [index] [length] \07- create substring (like MID$ in BASIC)
  880. end
  881. bat    call -scroll | goto -line%L
  882. bat -line39 %n = 10.1 | call -header | begtype
  883.   \0f[var]\07 - A DOS variable or global user variable %0 to %9 and %A to
  884. %O.  It may not be a predefined variable.
  885.  
  886.   \0f[string]\07 - Any valid token.  Letters, numbers, any variable, or any
  887. combination there of.  123, ABC, and 987%J4SF are all valid strings.
  888.  
  889.   \0f[number]\07 - Any token with a numeric result in the range of 0 to
  890. 65535.    For example (if %A contains 34) the three numbers 98, %A, and 12%A5
  891. (equivalent to 12345) would all be valid numbers.  Note that numbers are
  892. always positive and should never contain a sign ( + or - ) character.
  893.  
  894.   \0f[index]\07 - Same restrictions as [number] above except that an
  895. [index] in the range 17 to 65535 is meaningless and is equivalent to the
  896. number 16.
  897.  
  898.   \0f[length]\07 - Same restrictions as [number] above except that a
  899. [length] in the range 16 to 65535 is meaningless and is equivalent to the
  900. number 15.  Note that [length] is optional and has a default value of 15.
  901.  
  902. end
  903. bat call -scroll | goto -line%L
  904. bat -line40
  905. bat begtype
  906.  
  907.     \0fNOW IT'S YOUR TURN !!!\07
  908.  
  909.  
  910.   We wish to count the number of times that a user has used a certain .BAT
  911. program.  We will keep this count in the global user variable \0f%A\07
  912. which will stay active even BETWEEN batch file execution.  What is the
  913. command needed to increase the value in this variable by one?
  914.  
  915. end
  916. bat    %A = BAT%s%%A%s=%s%%A%s+%s1
  917. bat    call -tryit
  918. bat -opt11
  919. bat -line40 %H = DEBUGGING%sAIDS| %L = 40| %n = 11.0| call -header| begtype
  920.   As an aid in debugging, the TRACE.ON command enables a trace flag which
  921. causes each line in the BAT program to be printed as it is executed.  Three
  922. '+' (plus) symbols will precede the BAT statement which is printed out as
  923. an aid.  The trace can be turned off at any time by the TRACE.OFF command.
  924.  
  925.   A trace can be active during DOS commands within the BAT program.  In
  926. addition, trace can be enabled/disabled at any time, even in immediate
  927. mode.  Once enabled, it will remain in effect until the TRACE.OFF command
  928. is executed.  Errors, execution of other BAT language files, and even
  929. executing DOS commands will not change the trace mode.
  930. end
  931. bat    call -scroll | goto -line%L
  932. bat -opt12
  933. bat -line40 %H = ADDITIONAL%sINFO| %L = 40| %n = 12.0| call -header| begtype
  934.   The size of the keyboard stack defaults to 512 bytes.  This value can be
  935. changed by making the first statement which is executed by the Extended
  936. Batch Language program be of the form:    BAT * size.  Size is the decimal
  937. number of bytes to reserve for the stack.  This must be executed, for
  938. instance, when a system reset is performed because once this area is
  939. installed, the size is never altered until another system reset.
  940.  
  941.   There are additional variables %A thru %O (oh) which are called "global
  942. user variables".  These variables are used exactly like the variables
  943. supplied by DOS (%0 to %9) with two exceptions.  First, the contents of
  944. these variables are maintained between execution of batch files for as long
  945. as the system is powered on.  This "global" feature is useful for keeping
  946. indicators BETWEEN "sessions" of the user.  Second, because DOS does not
  947. know about these variables, they \0fcannot\07 be used as variables within
  948. any DOS command.  So while "COPY %1 %2" is valid, "COPY %A %B" is not.  If
  949. you wish to use them within DOS commands, they must first be copied via a
  950. statement like "BAT %1 = %A".
  951. end
  952. bat    call -scroll | goto -line%L
  953. bat -line41 %n = 12.1 | call -header | begtype
  954.   PREDEFINED VARIABLES...
  955.  
  956.   A return code is available at memory address [0000:04FE].  If set by a
  957. program, BAT can read this byte value with the variable %R.  The string
  958. stored into this variable is in hex with leading zeros truncated.
  959.  
  960.   The current default drive is stored into the %V variable.  It is a single
  961. character.
  962.  
  963.   The status of the stack is stored into the %Q variable.  It is a "K" if
  964. the READ command will be reading from the keyboard, and a "S" if it will be
  965. reading from the stack area.
  966.  
  967.   There are two character literals.  %S represents a space literal and %%
  968. represents a percent sign.  Either of these special variables can be stored
  969. into other variables, or used for testing special cases.
  970. end
  971. bat    call -scroll | goto -line%L
  972. bat -line42 %n = 12.2 | call -header | begtype
  973. The STATEOF command will search all disk drives for the existance of a file.
  974. The name after the word STATEOF can be a specific name, general name with
  975. wildcard characters (e.g. *.EXE), or it can be a name with a specific drive
  976. specification (e.g. A:PE.EXE). In the last case, only drive A: will be
  977. searched instead of all available drives. Note also that a variable can be
  978. used instead of a file name. In this version of BAT, only files in the
  979. current directory (no paths) can be found.
  980.  
  981. The return code variable %R is used to indicate the result of the search
  982. for STATEOF. The results are:
  983.  
  984.     0 - File found on default drive.
  985.     1 - File not found.
  986.     9 - Invalid file name specified.
  987.     A to D - Same as return code 0 but instead of being found on the
  988.         default drive, it was found on drive A, B, C, or D.
  989. end
  990. bat    call -scroll | goto -line%L
  991. bat -line43 %n = 12.3 | call -header | begtype
  992.   If a you wish to put more than one command on a line, the vertical bar
  993. "|" is useful.  When used with an IF command and the test for the IF
  994. conditions fail, the entire rest of the line will be ignored.  Multiple
  995. commands within a BAT statement is very useful when combined with the IF
  996. command.  For example:
  997.  
  998.     BAT IF %A = abc TYPE this | CALL -that | GOTO -other
  999.  
  1000.   If a comment is needed within a BAT program, the "*" (star) character is
  1001. useful.  When used after the word BAT, all characters which follow will be
  1002. ignored.  For example:
  1003.  
  1004.     BAT * This is a comment to the programmer.
  1005. end
  1006. bat    call -scroll | goto -line%L
  1007. bat -line44 %n = 12.4 | call -header | begtype
  1008.   That's about all the help there is!
  1009.  
  1010.   If you still need more information, you might wish to contribute in order
  1011. to receive a complete users guide and password to the BAT-BBS hot-line.  The
  1012. manual gives complete descriptions on all available commands with examples
  1013. of each.  It is prepunched for an IBM binder for ready reference.  With
  1014. the BAT-BBS, you can receive tips from other users and program updates just
  1015. as soon as they are available.    We feel that user supported software should
  1016. be a two way street.  With your help, it will work.
  1017.  
  1018.   If you find this program valuable, a contribution ($30 suggested) will be
  1019. appreciated.  To see further benefits of contributing and for more
  1020. information, see section 2 of this document.
  1021.  
  1022.  
  1023.             Seaware Corp.
  1024.              Post Office Box 1656
  1025.             Delray Beach, FL 33444
  1026. end
  1027. bat    call -scroll | goto -line%L
  1028.